C++ code: eliminate a source of potential bugs #5771
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To create zero-filled structs, we use a method where we create a static struct using a 'dummy constructor' taking an (unused) int argument. The problem is that if you mistakenly have e.g.
COPROC c = 1;
you don't get a compile error;
you get an uninitialized struct as if you had done
COPROC c = COPROC(1);
I changed this so that we use a type DUMMY_TYPE
(guaranteed not to be convertible from anything)
as the arg type for the dummy constructors.
So now you get a compile error in the above case.